﻿using System.Collections.Generic;
namespace TraceThisItem.Domain
{
	public class Workflow
	{
		#region Properties

		public int Id { get; set; }

		public string Name { get; set; }

		#endregion Properties

		public virtual StatusNode StartNode { get; set; }

		public virtual ICollection<StatusNode> Nodes { get; set; }

		public virtual ICollection<ItemType> ItemTypes { get; set; }

		/*public string Description
		{
			get
			{
				string description = "";

				description = "WorkFlow: " + Name;
				description += "Estado inicial: (" + StartNode.Name + ")";

				return description;
			}
		}*/

		

		#region Constructors

		public Workflow(string name, StatusNode initialNode)
        {
			this.Nodes = new List<StatusNode>();
			this.ItemTypes = new List<ItemType>();
			this.Nodes.Add(initialNode);
			//this.StartNode = initialNode;
			this.Name = name;
        }

		public Workflow(string name) //HZ ES una prueba ya que para crear el item, el workflow me devuelve dos Status Nodes "Nuevo" iguales..
		//	: this(name, new StatusNode())
		{
			this.Nodes = new List<StatusNode>();			//HZ ES una prueba ya que para crear el item, el workflow me devuelve dos Status Nodes "Nuevo" iguales..
			this.ItemTypes = new List<ItemType>();			//HZ ES una prueba ya que para crear el item, el workflow me devuelve dos Status Nodes "Nuevo" iguales..
			this.Name = name;								//HZ ES una prueba ya que para crear el item, el workflow me devuelve dos Status Nodes "Nuevo" iguales..
		}

		public Workflow()
			: this("Default")
		{
			
		}

		#endregion Constructors

		#region Methods

		/*public ICollection<StatusType> GetNextStatusType(StatusType statusType)
        {
            throw new System.NotImplementedException();
        }*/

		#endregion Methods

		public override string ToString()
		{
			return this.Name;
		}
	}
}